package com.bootdo.api.util;

import java.lang.reflect.Field;

import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonBeanProcessor;

/**
 * 对象转json时按对象属性顺序排序
 * @author hrh
 * @date 2016年5月31日 上午11:01:30
 */
public class JsonBeanProcessorSort implements JsonBeanProcessor{

	public JSONObject processBean(Object bean, JsonConfig config) {
		JSONObject jsonObject = new JSONObject();
		Class<?> clazz = bean.getClass().getSuperclass();
	 	Field[] supFields = new Field[]{};
	 	if(clazz != null){
	 		supFields = clazz.getDeclaredFields();
	 		for(Field field : supFields){
	 			if("serialVersionUID".equals(field.getName())) continue;
	 			field.setAccessible(true);
	 			try {
	 				jsonObject.put(field.getName(), field.get(bean));;
				} catch (Exception e) {
					e.printStackTrace();
				} finally {
					field.setAccessible(false);
				}
	 		}
	 	}
	 	
	 	Field[] fields = bean.getClass().getDeclaredFields();
	 	for(Field field : fields){
	 		if("serialVersionUID".equals(field.getName())) continue;
 			field.setAccessible(true);
 			try {
 				jsonObject.put(field.getName(), field.get(bean));;
			} catch (Exception e) {
				e.printStackTrace();
			} finally {
				field.setAccessible(false);
			}
 		}
		return jsonObject;
	}

}
